package com.sumainfor.pc.gmio.feign.ZuulFeign;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qiniu.util.Json;
import com.sumainfor.common.util.JsonResult;
import com.sumainfor.common.utlis.Pager;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 功能描述:
 *
 * @Auther: zhlu
 * @Date: 2019/1/18 16:02
 * @Description:
 */
public interface ZuulFeign {

    /**
     * 功能描述:
     * 根据用户编号获取用户资料
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/24 15:18
     */
    @GetMapping("/provider/user/getUserMap")
    JsonResult getUserMap(@RequestParam Map<String, Object> params);

    /**
     * 功能描述:
     * 获取所有用户的编号和名称
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/4/18 17:19
     */
    @GetMapping("/provider/user/getAllUserIdAndName")
    JsonResult getAllUserIdAndName();

    /**
     * 功能描述:
     * 获取所有服务中心
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/16 16:47
     */
    @GetMapping("/provider/dept/getDeptList")
    List<Map<String, Object>> getDeptList(@RequestParam(value = "params") Map<String, Object> params);

    /**
     * 功能描述:
     * 获取所有服务中心
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/5/16 16:47
     */
    @PostMapping("/provider/dept/getPostDeptList")
    List<Map<String, Object>> getPostDeptList(@RequestBody Map<String, Object> params);

    /**
     * 调用Zuul 获取用户的信息 和部门名称
     * <p>
     * select u.user_id,u.dept_id,u.no,u.name as username,u.email,u.phone,u.mobile,u.user_img
     * ,d.name as deptName
     *
     * @return Map结构数据
     */
    @PostMapping("/provider/getUser")
    JsonResult getUserInfo(@RequestBody Collection<String> ids);


    /**
     * 获得 1.公司  2.城市  3.服务中心
     *
     * @param id   要查询的id
     * @param type 要查询的类型
     * @return
     */
    @PostMapping("/provider/run/getDataByTypeAndId")
    Map<String, Object> getDataByTypeAndId(@RequestParam("id") String id, @RequestParam("type") Integer type);

    /**
     * 根据服务中心的编号查询服务中心数据
     *
     * @param ids
     * @return
     */
    @PostMapping("/provider/run/getRecycleServiceCenter")
    List<Map<String, Object>> getRecycleServiceCenter(@RequestBody List<String> ids);

    /**
     * 功能描述:
     * 根据当前公司编号获取公司微信支付账户资料
     *
     * @Author zhlu
     * @Description //TODO
     * @Date 2019/3/26 18:29
     */
    @GetMapping("/provider/area/getAreaPayMap")
    JsonResult getAreaPayMap(@RequestParam Map<String, Object> params);


    ///////////////////////////////////////////////////////////////////////////
    // 收费标准
    ///////////////////////////////////////////////////////////////////////////


    /**
     * 获取所有的公司数据列表
     *
     * @param page
     * @return
     */
    @PostMapping("/provider/run/selectGosList")
    Page<Map<String, Object>> selectGosList(@RequestParam Map<String, Object> page);


    /**
     * 获得所有的城市数据
     *
     * @param page
     * @return
     */
    @PostMapping("/provider/run/getCityListAll")
    Page<Map<String, Object>> getCityListAll(@RequestParam Map<String, Object> page);


    /**
     * 获得所有的服务中心数据
     *
     * @param params cityId 城市编号 + 分页
     * @return
     */
    @PostMapping("/provider/run/getCenterByCityId")
    Page<Map<String, Object>> getCenterByCityId(@RequestParam Map<String, Object> params);


    /**
     * 根据归属区域编号查询归属区域信息数据
     *
     * @param areaId
     * @return
     */
    @PostMapping("/provider/run/getAreaInfoById")
    Map<String, Object> getAreaInfoById(@RequestParam("areaId") Integer areaId);

    /////////////////////////////////////////////////
    ///
    ///zhoucong定义
    //////////////////////////////////////////////////
    @PostMapping("provider/message/getMessageList")
    JsonResult getMessageList(@RequestParam Map<String, Object> params,
                              @RequestParam("Pager") Pager pager
    );

    @GetMapping("/provider/area/getAllAreaList")
    List<Map<String,Object>> getAllAreaList();




    @PostMapping("/provider/area/getAreaid")
    JsonResult getAreaid(@RequestBody Map<String,Object> params);

    @PostMapping("/provider/area/getdeptname")
    Map<String,Object> getdeptname(@RequestBody Map<String,Object> params);

}
